
package cn.bluethink.eguan.model.core;

import java.util.Date;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;

import cn.bluethink.eguan.utils.DateTimeSerializer;

/**
 * @title 用户操作对象的动作
 * @Copyright 苏州中科蓝迪公司所有(c)2016-2021
 * @version 0.1
 *
 * @note 修订历史： （1）liuxn于2018年8月14日构建初始版本0.1
 *       （2）giszyj@126.com于2018年10月06日增加JsonInclue约束
 */
public class EgAction {
	
	/**
	 * 动作ID
	 */
	private Long aid;
	
	/**
	 * 动作的创建时间
	 */
    @JsonSerialize(using = DateTimeSerializer.class)
	private Date time;
	
	/**
	 * 动作类型
	 */
	private EgActionType type;

	/**
	 * 被操作的对象，与动作类型中的被操作对象类型保持一致
	 */
	private EgObject obj;
	
	/**
	 * 操作的结果
	 */
	private String rcontent;
	
	/**
	 * 操作的结果对象，与动作类型中的结果对象类型保持一致
	 */
	@JsonInclude(JsonInclude.Include.NON_NULL)
	private EgObject result;
	
	/**
	 * 动作发生的位置信息
	 */
	@JsonInclude(JsonInclude.Include.NON_NULL)
	private EgObject pos;
	
	/**
	 * 用户标识，执行动作的人
	 * 注意：当查询某个用户所做动作时，该对象为NULL
	 */
	@JsonInclude(JsonInclude.Include.NON_NULL)
	private EgUser user = null;

    public Long getAid() {
        return aid;
    }

    public void setAid(Long aid) {
        this.aid = aid;
    }

    public Date getTime() {
        return time;
    }

    public void setTime(Date time) {
        this.time = time;
    }

    public EgActionType getType() {
        return type;
    }

    public void setType(EgActionType type) {
        this.type = type;
    }

    public EgObject getObj() {
        return obj;
    }

    public void setObj(EgObject obj) {
        this.obj = obj;
    }

    public String getRcontent() {
        return rcontent;
    }

    public void setRcontent(String rcontent) {
        this.rcontent = rcontent;
    }

    public EgObject getResult() {
        return result;
    }

    public void setResult(EgObject result) {
        this.result = result;
    }

    public EgObject getPos() {
        return pos;
    }

    public void setPos(EgObject pos) {
        this.pos = pos;
    }

    public EgUser getUser() {
        return user;
    }

    public void setUser(EgUser user) {
        this.user = user;
    }

}
